热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

.NET|–Winform|–DotnetBar库的Button显示顺序设置

前言winform真的要注意细节啊.细节拉满才能把握得住的一个框架.需求实现一个动态添加按钮,但是要根据按钮来排序.解决方案usingDevComponents.DotNetBar

前言

winform真的要注意细节啊.细节拉满才能把握得住的一个框架.


需求

实现一个动态添加按钮, 但是要根据按钮来排序 .


解决方案

using DevComponents.DotNetBar;
namespace WinFormsApp1
{
public partial class Form1 : Form
{
private List _cOntrolList= new List();
private readonly static int _tabWidth = 45;
private readonly static int _tabHeight = 45;
private readonly static Size s_btnDefaultSize = new System.Drawing.Size(_tabWidth, _tabHeight);
public Form1()
{
InitializeComponent();
this.StartPosition = FormStartPosition.Manual;
var b3 = AddBtn("3", 3);
var b1 = AddBtn("1", 1);
var b2 = AddBtn("2", 2);
this.Controls.Add(b3);
this.Controls.Add(b1);
this.Controls.Add(b2);
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
_cOntrolList= _controlList.OrderBy(c => c.TabIndex).ToList();
var v = _controlList.Select(s => new { name = s.Name, tab = s.TabIndex });
for (int i = 0; i <_controlList.Count; i++)
{
_controlList[i].Location = new Point(0, _tabHeight * (i + 1));
}
}
protected override void OnControlAdded(ControlEventArgs e)
{
base.OnControlAdded(e);
_controlList.Add(e.Control);
this.Height += _tabHeight;
}
ButtonX AddBtn(string name, int index)
{
ButtonX newBtnTab = new ButtonX();
newBtnTab.Name = name;
newBtnTab.Text = name;
newBtnTab.TabIndex = index;
newBtnTab.Click += NewBtnTab_Click;
newBtnTab.Size = s_btnDefaultSize;
newBtnTab.Cursor = Cursors.Hand;
newBtnTab.Location = new Point(_tabWidth, _tabHeight);
newBtnTab.BackColor = System.Drawing.Color.FromArgb(255, 251, 251, 251);
newBtnTab.ColorTable = DevComponents.DotNetBar.eButtonColor.Flat;
return newBtnTab;
}
private void NewBtnTab_Click(object? sender, EventArgs e)
{
var newIndex = _controlList.Count + 1;
var newBtn = AddBtn(newIndex.ToString(), newIndex);
this.Controls.Add(newBtn);
}
}
}



推荐阅读
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • 探讨如何为魔兽世界中的神圣牧师配置宏,实现一键施放治疗之环和摧心魔(针对敌对目标),并讨论饰品使用的最佳实践。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 分享一个简化版的Silverlight链接图项目:Link Map Simplified
    本文介绍了一个使用Silverlight开发的可视化工具,主要用于展示和操作复杂的实体关系图(Graph)。该工具在犯罪调查系统中得到了广泛应用,帮助用户直观地获取和理解相关信息。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • 本文介绍了一种根据用户选择动态切换屏幕界面的方法,通过定义不同的选择块(Selection Block),实现灵活的用户交互体验。 ... [详细]
  • 在尝试用另一台电脑的MySQL文件替换本地D:\xampp\mysql目录后,MySQL服务无法启动。错误提示显示MySQL意外关闭,可能是由于端口冲突、依赖缺失、权限问题或崩溃等原因引起。 ... [详细]
  • 本文详细介绍了Ionic框架的使用方法及其与Angular的集成。Ionic框架是一个强大的前端开发工具,适用于构建跨平台的移动应用程序。文章将探讨如何引入必要的CSS和JavaScript文件,并解释bundle.js中包含的核心功能,如路由等。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 在本教程中,我们将深入探讨如何使用 Python 构建游戏的主程序模块。通过逐步实现各个关键组件,最终完成一个功能完善的游戏界面。 ... [详细]
  • 国际高保真音乐流媒体平台的崛起:亚马逊与谷歌的竞争策略
    近期,亚马逊和谷歌正积极筹备推出高保真音乐流媒体服务,预计在2019年底前上线。根据市场研究机构CIRP的数据,截至2018年12月,美国智能音箱的安装量已增至6600万台,较第三季度增长显著。这一趋势对Spotify等传统流媒体平台构成了新的挑战。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
author-avatar
辽宁何氏医学院视光张丽杰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有